iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0

從6分鐘介紹 mlops 的影片,我們得知會有三個階段的協作,包含 data engineering 進行 data 的處理產出最後的 dataset,ML engineering 根據 dataset 產生 data model,app engineering 藉由 model 製作 app

  • data engineering

    • Curated data(clean, prepare and organize)

    • The role of the data engineer is to take in raw data and curate (clean, prepare and organize) it for the data scientist to consume

https://ithelp.ithome.com.tw/upload/images/20241003/20118525L8JOsZtUmW.png

並且我有查到 DPD 這個詞,意味著 from initial curation through to production deployment and ongoing monitoring.

ref: https://www.youtube.com/watch?v=z1hQaqesPos

認真看了一下我們當前的 code,我們是直接引入 transformer model,所以我們應該是不會處理到前面 build model 的部分。transformer model 也稍微瞭解了一下,主要是 Google 提出,採取 注意力機制 的學習模型,特色是藉由上下文去做學習判斷。

研究到這邊,總算比較了解自己的挑戰是什麼。我們應該要盡可能地去找到 pubsub 可以 trigger 的 GCP Resource 並且讓 image 可以直接 run 在系統上。

在研究上目前分成兩條路,一條是改用 pipeline,然後用 Cloud Function with Pub/Sub。我花時間研究了一下 pipeline,為了更了解他在做什麼,並找了一篇 workshop:https://www.youtube.com/watch?v=ATA9t0e1upE

我們先快速介紹一下,ML Pipelines 目的是串接起 ML 中間的每個過程,而 Kubeflow 是一個 toolkit,他提公一個 pipeline 的 solution叫做 Kubeflow Pipelines。而 google 奠基於此體系推出 Vertex AI Pipelines ,有一個簡單的案例幫助大家理解:Kubeflow Pipelines,可以使用Kubernetes 资源(如永久性卷声明)。在Vertex AI Pipelines 中,您的数据存储在Cloud Storage 上,并使用Cloud Storage FUSE 装载到组件中。(ref)

Google Vertex AI 支持两种不同类型的管道:

  • Kubeflow Pipelines using the Kubeflow SDK ≥ 1.6
    使用 Kubeflow SDK ≥ 1.6 的 Kubeflow 管线

  • TensorFlow Extended Pipelines using the TFX SDK ≥ 0.30.0
    使用 TFX SDK 的 TensorFlow 扩展管道 ≥ 0.30.0

以下開始實作最簡單的 pipeline,一個 Pipeline 包含多個 components,component 可能是 Python function or Container。先來簡單實作 python function

  • 在程式碼中安裝 ++Kubeflow Pipelines module++

  • 使用 component 裝士氣

    @component()
    def concat(a: str, b: str) -> str:
      return a + b
    
  • 使用 pipeline

    @pipeline(name="basic-pipeline",
              pipeline_root=PIPELINE_ROOT + "basic-pipeline")
    def basic_pipeline(a: str='stres', b: str='sed'):
        concat_task = concat(a=a, b=b)
        reverse_task = reverse(a=concat_task.output)
    
  • Compile,將 pipeline compile 成 json file,最後會用此 json file 建立 Vertex AI Pipelines

  • run job

    job = pipeline_jobs.PipelineJob(
        display_name="basic-pipeline",
        template_path="basic_pipeline.json",
        parameter_values={"a": "stres", "b": "sed"}
    )
    
    job.run(sync=False)
    

https://ithelp.ithome.com.tw/upload/images/20241003/20118525udjA32f3Z1.png

https://ithelp.ithome.com.tw/upload/images/20241003/20118525IpE57owSZy.png

從 job 可以看到他是起一個 node 跟 pod 幫你運行,減少我們需要管 kube 的工。你也可以在 code 中指定 instance type

https://ithelp.ithome.com.tw/upload/images/20241003/201185254hkBKAFhID.png

但這個辦法是要大改 code 的。另一個方法就是將他當作一般的 API Service,但是必須放在 GPU 機器上。缺點雖然是沒辦法看到每個 process,但就是不用改 code。初步查到的資料是 pubsub → eventarc → gke。這邊的 eventarc 跟 AWS eventbridge 有點像,就是轉送服務。這邊可能是從 eventarc sent http post to GKE。

DoD 總結

  • 釐清 storage 環境差別

  • 改用 Vertical AI Workbench 替代開發環境

  • 設計開發上版的 Git 規則(不同環境的打包以及 image version 設計)

  • 設計 CI 及 CD 流程

  • 使用 eventarc 取代當前 subscriber 動作

  • 讓 eventarc 可以打 GKE private endpoint

以下為 Before

https://ithelp.ithome.com.tw/upload/images/20241003/20118525VSlWQlvYAH.png

以下為 After

https://ithelp.ithome.com.tw/upload/images/20241003/2011852518BWBw3YVb.png


上一篇
颱風天 測試天
下一篇
開工重新確認需求
系列文
從 AWS 轉生到 GCP 世界,還順便轉職成 DevOps 的 SRE30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言